<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /* 
      https://leetcode-cn.com/problems/maximum-product-subarray/
      思路：https://leetcode-cn.com/problems/maximum-product-subarray/solution/wa-ni-zhe-ti-jie-shi-xie-gei-bu-hui-dai-ma-de-nu-p/

      题目：给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组（该子数组中至少包含一个数字），
      并返回该子数组所对应的乘积。 

      示例 1:   输入: [2,3,-2,4]
                输出: 6
                解释: 子数组 [2,3] 有最大乘积 6。

      示例 2:   输入: [-2,0,-1]
                输出: 0
                解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
    */
    let nums = [2,3,-2,4];
    // let nums = [-2,0,-1];

    function maxProduct(nums) {
      let res = nums[0];
      let preMin = nums[0];
      let preMax = nums[0];

      for (let i = 1; i < nums.length; i++) {
        let temp1 = preMin * nums[i];
        let temp2 = preMax * nums[i];
        preMin = Math.min(nums[i], temp1, temp2);
        preMax = Math.max(nums[i], temp1, temp2);

        res = Math.max(res, preMax);
      }

      return res;
    }
    console.log(maxProduct(nums));
  </script>
</body>
</html>